<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <title>Trabalhando com P&aacute;ginas - Zend Framework Manual</title>

    <link href="../css/shCore.css" rel="stylesheet" type="text/css" />
    <link href="../css/shThemeDefault.css" rel="stylesheet" type="text/css" />
    <link href="../css/styles.css" media="all" rel="stylesheet" type="text/css" />
</head>
<body>
<h1>Zend Framework</h1>
<h2>Programmer's Reference Guide</h2>
<ul>
    <li><a href="../en/zend.pdf.pages.html">Inglês (English)</a></li>
    <li><a href="../pt-br/zend.pdf.pages.html">Português Brasileiro (Brazilian Portuguese)</a></li>
</ul>
<table width="100%">
    <tr valign="top">
        <td width="85%">
            <table width="100%">
                <tr>
                    <td width="25%" style="text-align: left;">
                    <a href="zend.pdf.save.html">Salvar Mudan&ccedil;as em Documentos PDF</a>
                    </td>

                    <td width="50%" style="text-align: center;">
                        <div class="up"><span class="up"><a href="zend.pdf.html">Zend_Pdf</a></span><br />
                        <span class="home"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></span></div>
                    </td>

                    <td width="25%" style="text-align: right;">
                        <div class="next" style="text-align: right; float: right;"><a href="zend.pdf.drawing.html">Desenhando</a></div>
                    </td>
                </tr>
            </table>
<hr />
<div id="zend.pdf.pages" class="section"><div class="info"><h1 class="title">Trabalhando com Páginas</h1></div>
    

    <div class="section" id="zend.pdf.pages.creation"><div class="info"><h1 class="title">Criação de Página</h1></div>
        

        <p class="para">
            As páginas em um documento <acronym class="acronym">PDF</acronym> são representadas como instâncias de
            <span class="classname">Zend_Pdf_Page</span> em <span class="classname">Zend_Pdf</span>.
        </p>

        <p class="para">
            Páginas <acronym class="acronym">PDF</acronym> podem ser carregadas de um <acronym class="acronym">PDF</acronym>
            existente ou criadas usando a <acronym class="acronym">API</acronym> de <span class="classname">Zend_Pdf</span>.
        </p>

        <p class="para">
            Novas páginas podem ser criadas instanciando novos objetos
            <span class="classname">Zend_Pdf_Page</span> diretamente ou chamando o método
             <span class="methodname">Zend_Pdf::newPage()</span>, que retorna um objeto
            <span class="classname">Zend_Pdf_Page</span>.  <span class="methodname">Zend_Pdf::newPage()</span> cria
            uma página já anexada à um documento. Páginas anexadas não podem ser usadas com outros
            documentos <acronym class="acronym">PDF</acronym> até que não esteja clonado. Veja a seção <a href="zend.pdf.pages.html#zend.pdf.pages.cloning" class="link">Clonagem de página</a> para obter mais detalhes.
        </p>

        <p class="para">
            O método  <span class="methodname">Zend_Pdf::newPage()</span> e o construtor
            <span class="classname">Zend_Pdf_Page</span> recebem os mesmos parâmetros de definição do
            tamanho da página. Eles podem receber tanto o tamanho da página ($x, $y) em pontos
            (1/72 polegadas) quanto uma constante pré-definida representando um tipo de página:

            <ul class="itemizedlist">
                <li class="listitem"><p class="para">Zend_Pdf_Page::SIZE_A4</p></li>
                <li class="listitem"><p class="para">Zend_Pdf_Page::SIZE_A4_LANDSCAPE</p></li>
                <li class="listitem"><p class="para">Zend_Pdf_Page::SIZE_LETTER</p></li>
                <li class="listitem"><p class="para">Zend_Pdf_Page::SIZE_LETTER_LANDSCAPE</p></li>
            </ul>
        </p>

        <p class="para">
            As páginas de um documento são armazenadas no atributo público <var class="varname">$pages</var>
            da classe <span class="classname">Zend_Pdf</span>. O atributo contém uma matriz de objetos
            <span class="classname">Zend_Pdf_Page</span> e define completamente as instâncias e ordem das
            páginas. Esta matriz pode ser manipulada como qualquer outra matriz do
            <acronym class="acronym">PHP</acronym>:
        </p>

        <div class="example" id="zend.pdf.pages.example-1"><div class="info"><p><b>Example #1 Gerenciamento de páginas de documentos PDF</b></p></div>
            

            <pre class="programlisting brush: php">
...
// Inverte a ordem das páginas
$pdf-&gt;pages = array_reverse($pdf-&gt;pages);
...
// Adiciona nova página
$pdf-&gt;pages[] = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);
// Adiciona nova página
$pdf-&gt;pages[] = $pdf-&gt;newPage(Zend_Pdf_Page::SIZE_A4);

// Remove uma página específica
unset($pdf-&gt;pages[$id]);

...
</pre>

        </div>
    </div>

    <div class="section" id="zend.pdf.pages.cloning"><div class="info"><h1 class="title">Clonagem de página</h1></div>
        

        <p class="para">
            Páginas <acronym class="acronym">PDF</acronym> podem ser duplicadas através da criação de um novo objeto
            <span class="classname">Zend_Pdf_Page</span> com uma página já existente como parâmetro:
        </p>

        <div class="example" id="zend.pdf.pages.example-2"><div class="info"><p><b>Example #2 Duplicando páginas existentes</b></p></div>
            

            <pre class="programlisting brush: php">
...
// Armazena a página template em uma variável separada
$template = $pdf-&gt;pages[$templatePageIndex];
...
// Adiciona nova página
$page1 = new Zend_Pdf_Page($template);
$page1-&gt;drawText(&#039;Algum texto...&#039;, $x, $y);
$pdf-&gt;pages[] = $page1;
...

// Adiciona outra página
$page2 = new Zend_Pdf_Page($template);
$page2-&gt;drawText(&#039;Outro texto...&#039;, $x, $y);
$pdf-&gt;pages[] = $page2;
...

// Remove a fonte da página template dos documentos
unset($pdf-&gt;pages[$templatePageIndex]);

...
</pre>

        </div>

        <p class="para">
            É útil caso você precise criar diversas páginas usando um template.
        </p>

        <div class="caution"><b class="caution">Caution</b>
            <p class="para">
                Importante! Uma página duplicada compartilha alguns recursos do
                <acronym class="acronym">PDF</acronym> com uma página template, então ela só pode ser usada no mesmo
                documento como uma página template. Um documento modificado pode ser salvo como um
                novo documento.
            </p>
        </div>

        <p class="para">
            <code class="code">clone</code> operator may be used to create page which is not attached to any
            document. It takes more time than duplicating page since it needs to copy all dependent
            objects (used fonts, images and other resources), but it allows to use pages from
            different source documents to create new one:
        </p>

        <div class="example" id="zend.pdf.pages.example-3"><div class="info"><p><b>Example #3 Cloning existing page</b></p></div>
            

            <pre class="programlisting brush: php">
$page1 = clone $pdf1-&gt;pages[$templatePageIndex1];
$page2 = clone $pdf2-&gt;pages[$templatePageIndex2];
$page1-&gt;drawText(&#039;Some text...&#039;, $x, $y);
$page2-&gt;drawText(&#039;Another text...&#039;, $x, $y);
...
$pdf = new Zend_Pdf();
$pdf-&gt;pages[] = $page1;
$pdf-&gt;pages[] = $page2;
</pre>

        </div>

        <p class="para">
            If several template pages are planned to be used as templates then it could be more
            efficient to utilize <span class="classname">Zend_Pdf_Resource_Extractor</span> class which
            gives an ability to share resources between cloned pages - fonts, images, etc.
            (otherwise new resource copy will be created for each cloned page):
        </p>

        <div class="example" id="zend.pdf.pages.example-4"><div class="info"><p><b>Example #4 
                Cloning existing page using <span class="classname">Zend_Pdf_Resource_Extractor</span> class
            </b></p></div>
            

            <pre class="programlisting brush: php">
$extractor = new Zend_Pdf_Resource_Extractor();
....
$page1 = $extractor-&gt;clonePage($pdf-&gt;pages[$templatePageIndex1]);
$page2 = $extractor-&gt;clonePage($pdf-&gt;pages[$templatePageIndex2]);
$page1-&gt;drawText(&#039;Some text...&#039;, $x, $y);
$page2-&gt;drawText(&#039;Another text...&#039;, $x, $y);
...
$pdf = new Zend_Pdf();
$pdf-&gt;pages[] = $page1;
$pdf-&gt;pages[] = $page2;
</pre>

        </div>
    </div>
</div>
        <hr />

            <table width="100%">
                <tr>
                    <td width="25%" style="text-align: left;">
                    <a href="zend.pdf.save.html">Salvar Mudan&ccedil;as em Documentos PDF</a>
                    </td>

                    <td width="50%" style="text-align: center;">
                        <div class="up"><span class="up"><a href="zend.pdf.html">Zend_Pdf</a></span><br />
                        <span class="home"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></span></div>
                    </td>

                    <td width="25%" style="text-align: right;">
                        <div class="next" style="text-align: right; float: right;"><a href="zend.pdf.drawing.html">Desenhando</a></div>
                    </td>
                </tr>
            </table>
</td>
        <td style="font-size: smaller;" width="15%"> <style type="text/css">
#leftbar {
	float: left;
	width: 186px;
	padding: 5px;
	font-size: smaller;
}
ul.toc {
	margin: 0px 5px 5px 5px;
	padding: 0px;
}
ul.toc li {
	font-size: 85%;
	margin: 1px 0 1px 1px;
	padding: 1px 0 1px 11px;
	list-style-type: none;
	background-repeat: no-repeat;
	background-position: center left;
}
ul.toc li.header {
	font-size: 115%;
	padding: 5px 0px 5px 11px;
	border-bottom: 1px solid #cccccc;
	margin-bottom: 5px;
}
ul.toc li.active {
	font-weight: bold;
}
ul.toc li a {
	text-decoration: none;
}
ul.toc li a:hover {
	text-decoration: underline;
}
</style>
 <ul class="toc">
  <li class="header home"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></li>
  <li class="header up"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></li>
  <li class="header up"><a href="reference.html">Refer&ecirc;ncia do Zend Framework</a></li>
  <li class="header up"><a href="zend.pdf.html">Zend_Pdf</a></li>
  <li><a href="zend.pdf.introduction.html">Introdu&ccedil;&atilde;o</a></li>
  <li><a href="zend.pdf.create.html">Criando e Carregando Documentos PDF</a></li>
  <li><a href="zend.pdf.save.html">Salvar Mudan&ccedil;as em Documentos PDF</a></li>
  <li class="active"><a href="zend.pdf.pages.html">Trabalhando com P&aacute;ginas</a></li>
  <li><a href="zend.pdf.drawing.html">Desenhando</a></li>
  <li><a href="zend.pdf.interactive-features.html">Interactive Features</a></li>
  <li><a href="zend.pdf.info.html">Informa&ccedil;&atilde;o do Documento e Metadados</a></li>
  <li><a href="zend.pdf.usage.html">Zend_Pdf module usage example</a></li>
 </ul>
 </td>
    </tr>
</table>

<script type="text/javascript" src="../js/shCore.js"></script>
<script type="text/javascript" src="../js/shAutoloader.js"></script>
<script type="text/javascript" src="../js/main.js"></script>

</body>
</html>